1. Field of the Invention
This invention relates generally to computer graphics hardware. More particularly, it relates to an architecture for interfacing a computer graphics processor to a general purpose computer. Even more particularly, it relates to an architecture for interfacing a computer graphics processor to a general purpose computer where the computer graphics processor operates on volumetric data for visualization applications.
2. Background of the Invention
Volumetric rendering is the process of taking a data set representing a three-dimensional volume, assigning a color and an opacity to each volume element, or voxel, and projecting them onto the image plane. An example might be the visualization of stress in a composite material under some applied force. Looking at only the highest and lowest stress is values and setting all other volume elements to a low opacity, it is possible to see how the material will react to various forces and where fractures may occur.
The techniques used to generate a realistic display of volumetric data involve computing the path of a light ray from screen pixel locations to its projected or reflected locations. Unfortunately, these techniques are very compute intensive, requiring a vary large number of numerical calculations for each pixel in the image, and each data point in the three-dimensional data set. Because of these compute requirements, many computer graphics workstations are equipped with a graphics accelerator cards.
Graphics accelerator cards contain specialized hardware that is optimized to render a screen image from a set of input data. The use of a graphics accelerator card improves both the graphics and general purpose computing performance of the workstation. The graphics performance is improved because the specialized hardware is capable of rendering the screen image much faster than the general purpose microprocessor through the use of specialized hardware. The general purpose computing performance is improved because the general purpose microprocessor is not burdened with the compute intensive task of rendering the screen image.
A typical graphics accelerator card consists of graphics processor that contains specialized hardware for rendering screen images, memory for storing both the input data and the rendered image, and an interface to an I/O bus for communicating with the rest of the computer system. The I/O bus is used by the computer system to supply commands and input data from main memory to the graphics accelerator card. Unfortunately, in modem graphics workstations, the I/O bus is relatively slow when compared to the speed of the central processing unit (CPU) or the graphics processor. This means the CPU may not be able to send new input data over the I/O bus to the graphics card fast enough to perform such desirable visualization tasks such as real-time animation or jitter-free object rotation. This problem is further compounded by the large data sets that comprise three-dimensional volumetric data. For example, a 512.times.512.times.512 array of 32-bit words would require over 4 seconds to transfer over a 33-MHZ, 32-bit I/O bus.
Another problem is the amount of memory necessary to store this data on the graphics card. The same 512.times.512.times.512 array, above, would requires 500 megabytes of memory on the graphics card. This significantly increases the cost of the graphics card and hence, the cost of the entire graphics workstation. Furthermore, if there is not enough memory on the graphics card to hold the entire data array, the array must be broken into smaller pieces that are operated on independently by the graphics processor. These pieces must be individually, and repeatedly, transferred over the I/O bus to the graphics card. Then some method must be used to combine the output from each of the smaller data pieces to form a single screen image. This process consumes a great deal of time, making any sort of real-time display unfeasible.
Accordingly, there is a need in the art for an improved architecture to interface a graphics processor to a general purpose CPU. Such an architecture should facilitate data transfer speed between the CPU and the graphics processor. Such an architecture should help minimize transfers between main memory and the graphics processor. Finally, such an architecture should also make efficient use of main and graphics card memory to minimize additional cost.